/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package escom.ipn.modelo.dao;

import escom.ipn.modelo.dto.Incidente_Radios;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Daniel
 */
public class Incidente_RadiosDAO {
    public static final String SQL_INSERT =
            "INSERT INTO incidente_radios (INCIDENTE_ID_incidente, RADIO_COMUNICACION_id_radio) VALUES (?, ?)";
    public static final String SQL_SELECT =   
            "SELECT distinct RADIO_COMUNICACION_id_radio, INCIDENTE_ID_incidente FROM incidente_radios "
            + "join radio_comunicacion on id_radio=RADIO_COMUNICACION_id_radio "
            + "join CAT_ESTADO_RECURSO ON id_estado_recurso=CAT_ESTADO_RECURSO_id_estado_recurso "
            + "where INCIDENTE_ID_incidente = ? "
            + "and estado!= \"Libre\"";
    public static final String SQL_SELECT_ALL =
            "select * from usuario_incidente";

    
    public void createIncidenteRadio(Incidente_Radios a, Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        try {
            ps = conn.prepareStatement(SQL_INSERT);
            ps.setInt(1, a.getINCIDENTE_id_incidente());
            ps.setInt(2, a.getRADIO_COMUNICACION_id_radio() );
            ps.executeUpdate();
        } finally {
            cerrar(ps);
            cerrar(conn);
        }
    }
    
    public List loadIncidenteRadio(Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_SELECT_ALL);
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return resultados;
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
        }
    }
    
    public List loadIncidenteRadio(Incidente_Radios a,Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_SELECT);
            ps.setInt(1, a.getINCIDENTE_id_incidente());
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return resultados;
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
        }
    }
    
    private List getResults(ResultSet rs)
            throws SQLException {
        List results = new ArrayList();
        while (rs.next()) {
            Incidente_Radios a = new Incidente_Radios();
            a.setINCIDENTE_id_incidente(rs.getInt("INCIDENTE_ID_incidente"));
            a.setRADIO_COMUNICACION_id_radio(rs.getInt("RADIO_COMUNICACION_id_radio"));
            results.add(a);
        }
        return results;
    }
    
    private void cerrar(Connection cnn) {
        if (cnn != null) {
            try {
                cnn.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(PreparedStatement ps) {
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }
}
